﻿#ifndef FBASEBUTTON_H
#define FBASEBUTTON_H

#include "../Base/FTheme.h"
#include <QPushButton>

class FBaseButton : public QPushButton
{
    Q_OBJECT
public:
    enum AppearanceType {
        Fill,  // 实心按钮；文字白色；悬停状态下背景变暗；按压状态下背景变亮。
        Plain, // 边框高亮，类别半透明的按钮；正常状态下文字和边框同色；悬停状态下与Fill的正常状态相同；按压状态和Fill的按压状态相同。
    };

    explicit FBaseButton(QWidget *parent = nullptr);
    explicit FBaseButton(const QString &text, QWidget *parent = nullptr);
    FBaseButton(const QIcon& icon, const QString &text, QWidget *parent = nullptr);

    // 设置按钮样式：
    void setColorType(FColors::FColorType type);
    void setAppearanceType(AppearanceType type);
    void setSizeType(FTheme::FSizeType type);

private:
    void updateStyle();
    QList<QColor> getColors();

private:
    FColors::FColorType m_colorType;
    FTheme::FSizeType m_sizeType;
    AppearanceType m_appearanceType;
};

#endif // FBASEBUTTON_H
